<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;
use \DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use \App\Http\Requests\UserPostRequest;
use Session;


class ConfigController extends Controller
{   
    //隐式控制器中间件(在该隐式控制器的方法里加上如下代码,就可以限定该隐式控制器的所有方法)
    protected $middleware = ['App\Http\Middleware\LogMiddleware'=>[]];
    
    /**
     * 配置添加页面
     *
     * @return vodi
     */
    public function getAdd()
    {
        //返回配置添加列表页
        return view('admin.config.add');
    }

    /**
     * 配置列表页面
     * $num 页面显示条数
     * $
     * @return vodi
     */
    public function getIndex(Request $request)
    {
        //显示获取显示条数
        $num = $request->input('num',10);
        //判断用户是否查询
        if($request->input('keyword')){
            //查找数据库用户资料
            $configs = DB::table('config')
            ->where('webname','like','%'.$request->input('keyword').'%')
            ->paginate($num);
        }else{
            $configs = DB::table('config')->paginate($num);
            // dd($types);
        }
        // dd($configs);
        //获取参数
        $all = $request->all();
        //返回配置列表页
        return view('admin.config.index',['configs'=>$configs,'all'=>$all]);
    } 

    /**
     * 配置添加数据
     * $data 配置信息
     * $res 影响行数
     * @return vodi
     */
    public function postInsert(Request $request)
    {
        //获取信息
        $data = $request->except(['_token']);
        //判断信息是否为空
        if($data['webname'] == '' || $data['keywords'] == '' || $data['copy'] == '' || $data['logo'] == ''){
            return back()->with('error','填写信息不能为空');
        }
        //调用函数
        $data['logo'] = $this->upload($request);
        //提交到数据库
        $res = DB::table('config')->insert($data);
        //判断
        if($res){
            return redirect('admin/config/index');
        }else{
            return back()->withinput();
        }

    } 

    /**
     * 配置文件上传函数
     * $name 随机名
     * $suffix 文件后缀名
     * $size 文件大小
     * $arr 文件类型
     * @return $name.$suffix
     */
    public function upload($request)
    {
        //判断海报是否上传
        if($request->hasFile('logo')){
            //随机生成文件名
            $name = md5(time()+rand(100000,999999));
            //获取文件后缀名
            $suffix = $request->file('logo')->getClientOriginalExtension();
            //获取海报大小
            $size = $request->file('logo')->getsize();
            //判断海报是否过大
            if($size>2024000){
                return back()->with('error','上传文件过大');
            }
            //文件格式
            $arr = ['png','jpg','jpeg','gif'];
            //判断文件格式是否正确
            if(!in_array($suffix,$arr)){
                return back()->with('error','上传文件格式不正确');
            }
            //上传到指定路径
            $request->file('logo')->move('./public/logo/',$name.'.'.$suffix);
            //返回路径
            return '/public/logo/'.$name.'.'.$suffix;
        }
    }    

    /**
     * ajax设置显示数据共享
     * $id 配置文件id
     * $res 配置信息
     * @return vodi
     */
    public function postSet(Request $request)
    {
        //获取配置id
        $id = $request->input('id');
        // dd($id);
        //开启session
        // session_start();
        // //ID存入session中
        // $_SESSION['cid'] = $id;
        // session(['cid' =>$id]);
        //先重置所有数据状态
        DB::table('config')->update(['status'=>0]);
        //查询数据库
        $res = DB::table('config')->where('id',$id)->update(['status'=>1]);
        if(!empty($res)){
            echo 1;
        }else{
            echo 2;
        }
    }
    
    /**
     * 提交到修改页
     * 
     * 
     * @return vodi
     */
    public function getUp(Request $request)
    {
        //获取提交信息
        $id = $request->input('id');
        //查询数据库
        $res = DB::table('config')->where('id',$id)->first();
        //返回到修改页
        return view('admin.config.update',['res'=>$res]);
    }

    /**
     * 修改数据库配置
     * 
     * @return vodi
     */
    public function postUpdate(Request $request)
    {
        //获取提交信息
        $data = $request->except(['_token']);
        //判断提交信息是否为空
        if($data['webname'] == '' || $data['keywords'] == '' || $data['copy'] == ''){
            return back()->with('error','填写信息不能为空');
        }
        //判断是否上传图片
        if($request->hasFile('logo')){
            //调用函数
            $data['logo'] = $this->upload($request);
        }
        //修改数据库
        $res = DB::table('config')->where('id',$data['id'])->update($data);
        //判断
        if($res){
            return redirect('admin/config/index');
        }else{
            return back()->with('error','修改失败')->withinput();
        }
    }
}
